#ifndef GAMEOBJECT_H_INCLUDED
#define GAMEOBJECT_H_INCLUDED


//#include "EventHandler.h"
#include "Vec3.h"
#include <map>


class GameObject 
{
public:
	GameObject() : m_id(0) {}
	virtual ~GameObject() {};
	virtual void Draw() {}
	virtual void Update() = 0;

	Vec3f GetPos() const { return m_pos; }
	Vec3f GetVel() const { return m_vel; }
	void SetPos(Vec3f pos) { m_pos = pos; }
	void SetVel(Vec3f vel) { m_vel = vel; }
	
	//virtual RigidBody* GetRigidBody() { return m_pRigidBody; }
	int GetID() const { return m_id; }
	void SetId(int NewId) { m_id = NewId; }

protected:
	Vec3f m_pos;
	Vec3f m_vel;
	float m_invMass;

	int m_id;
	std::string m_typeName;
	std::string m_texPath;

};
typedef std::map<int, GameObject*> GameObjectsMap;
#endif